/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package negocio;

import exceptions.ExceptionEvento;
import java.util.Date;
import java.util.HashSet;
import java.util.Set;

/**
 *
 * @author diego
 */
class Evento {
    private Integer id;
    private Date fecha;
    private Date fechaCierre;
    private String nombre;
    private Integer cupo;
    private Set<Evento> correlativas;
    private Set<Persona> inscriptos;
    private boolean valoracion;
    private boolean activo;
    private String codigo;
    private Area areaResponsable;
    private Set<Area> areasParticipantes;
    public Evento() {
    }

    public Evento(Date fecha, Date fechaCierre,String nombre, Integer cupo, boolean valoracion,String codigo,Area areaResponsable) {
        this.activo = true;
        this.fecha = fecha;
        this.fechaCierre = fechaCierre;
        this.nombre = nombre;
        this.cupo = cupo;
        this.valoracion = valoracion;
        this.correlativas = new HashSet();
        this.inscriptos = new HashSet();
        this.codigo = codigo;
        this.areaResponsable = areaResponsable;
        this.areasParticipantes = new HashSet();
    }

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public Date getFecha() {
        return fecha;
    }

    public void setFecha(Date fecha) {
        this.fecha = fecha;
    }

    public String getNombre() {
        return nombre;
    }

    public void setNombre(String nombre) {
        this.nombre = nombre;
    }

    public Integer getCupo() {
        return cupo;
    }

    public void setCupo(Integer cupo) {
        this.cupo = cupo;
    }

    public Set<Evento> getCorrelativas() {
        return correlativas;
    }

    public void setCorrelativas(Set<Evento> correlativas) {
        this.correlativas = correlativas;
    }

    public Set<Persona> getInscriptos() {
        return inscriptos;
    }

    public void setInscriptos(Set<Persona> inscriptos) {
        this.inscriptos = inscriptos;
    }

    public boolean getValoracion() {
        return valoracion;
    }

    public void setValoracion(boolean valoracion) {
        this.valoracion = valoracion;
    }

    public boolean getActivo() {
        return activo;
    }

    public void setActivo(boolean activo) {
        this.activo = activo;
    }

    public Date getFechaCierre() {
        return fechaCierre;
    }

    public void setFechaCierre(Date fechaCierre) {
        this.fechaCierre = fechaCierre;
    }

    public String getCodigo() {
        return codigo;
    }

    public void setCodigo(String codigo) {
        this.codigo = codigo;
    }

    public Area getAreaResponsable() {
        return areaResponsable;
    }

    public void setAreaResponsable(Area areaResponsable) {
        this.areaResponsable = areaResponsable;
    }

    public Set<Area> getAreasParticipantes() {
        return areasParticipantes;
    }

    public void setAreasParticipantes(Set<Area> areasParticipantes) {
        this.areasParticipantes = areasParticipantes;
    }
    
    
    public String toString(){
        return this.codigo.concat(" - ").concat(this.nombre);
    }
    public void agregarCorrelativa(Evento unEvento){
        this.correlativas.add(unEvento);
                
    }
    public String inscribir(Persona unaPersona) throws ExceptionEvento{
        if(this.inscriptos.size() <= this.cupo){
            this.inscriptos.add(unaPersona);
            return this.codigo.concat(String.valueOf(this.inscriptos.size()));
        }else{
            throw new ExceptionEvento("Se ha completado el cupo de inscriptos");
        }
    }
    public void quitarInscripto (Persona unaPersona){
        this.inscriptos.remove(unaPersona);
    }
    
    
    
    
    
    
}
